package MAIN;
//笔试强训第10天

//选择题
/*只要方法没有执行完成此时就没有返回结果的，如果方法中有try catch语句，finally中有
* 打印的语句，一定是先进行打印，之后再返回这个方法的返回值*/
/*全局变量是存放在堆中的，局部变量是存放在栈帧中的*/
/*不能把基本数据类型声明成抽象的*/
/*this和super如果出现在构造方法中，都必须放在第一行，所以是不能同时出现的*/
/*如果抛出了一个异常，此时如果没有处理这个异常，就会交给上层调用者去处理这个异常，如果
* 上层调用者没有处理这个异常，此时jvm就会抛出异常，并且不会执行后面的代码，如果catch到了异常
* 没有处理这个异常，而是在catch中又抛出了异常，之后没有处理这个异常，此时try代码块之外的代码也是
* 不会继续执行的*/
/*“+”运算符如果遇到比int类型小的基本数据类型，此时就会升级成int类型，但是如果两个
* byte类型相加，如果byte类型被final修饰，此时的byte类型不会进行升级,只要被final
* 修饰了一个变量，这个变量的数据类型和值都是不能被改变的，如果值的类型和接收值的类型不匹配，
* 此时编译报错，不能通过编译*/
/*所有的类都是Object类的子类，String类型是一个类类型*/


import java.util.Scanner;

//编程题
public class Main10 {
    //密码强度等级
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            String str = scan.nextLine();
            int sum = 0;
            int sum1 = getLen(str);
            int sum2 = getchar(str);
            int sum3 = getNum(str);
            int sum4 = getSym(str);
            //奖励
            if (sum2 == 20 && sum3 >= 1 && sum4 >= 1) {
                sum = sum1 + sum2 + sum3 + sum4 + 5;
            }else if (sum2 == 10 && sum3 >= 1 && sum4 >= 1){
                sum = sum1 + sum2 + sum3 + sum4 + 3;
            }else if (sum2 == 10 && sum3 >=1 && sum4 == 0) {
                sum = sum1 + sum2 + sum3 + sum4 + 2;
             }else {
                sum = sum1 + sum2 + sum3 + sum4;
            }

            //评分
            if (sum >= 90) {
                System.out.println("VERY_SECURE");
            }else if (sum >= 80) {
                System.out.println("SECURE");
            }else if (sum >= 70) {
                System.out.println("VERY_STRONG");
            }else if (sum >= 60) {
                System.out.println("STRONG");
            }else if (sum >= 50) {
                System.out.println("AVERAGE");
            }else if (sum >= 25) {
                System.out.println("WEAK");
            }else if (sum >= 0) {
                System.out.println("VERY_WEAK");
            }
        }
    }
    //判断长度
    public static int getLen(String str) {
        if (str.length() <= 4) {
            return 5;
        }else if (str.length() >=5 && str.length() <= 7) {
            return 10;
        }else if (str.length() >= 8) {
            return 25;
        }else{
            return 0;
        }
    }
    //判断字母
    public static int getchar(String str) {
        int small = 0;
        int big = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (ch >= 65 && ch <= 90) {
                big++;
            }else if (ch >= 97 && ch <= 122) {
                small++;
            }
        }
        if (small > 0 && big > 0) {
            return 20;
        }else if (small == 0 || big == 0) {
            return 10;
        }else {
            return 0;
        }
    }
    //判断数字
    public static int getNum(String str) {
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (ch-'0' >= 0 && ch-'0' <= 9) {
                count++;
            }
        }
        if (count > 1) {
            return 20;
        }else if (count == 1) {
            return 10;
        }else {
            return 0;
        }
    }
    //判断字符
    public static int getSym(String str) {
        int sum = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (!(ch >= 65 && ch <= 90) &&
            !(ch >= 97 && ch <= 122) &&
            !(ch-'0' >= 0 && ch-'0' <= 9)) {
                sum++;
            }
        }
        if (sum > 1) {
            return 25;
        }else if (sum == 1) {
            return 10;
        }else {
            return 0;
        }
    }

    //井字棋
    //思路：判断每一行的数字之和，如果相加没有 =3，此时就判断列，如果数字相加没有 =3
    //此时再判断主对角线和副对角线 看数字相加 ==3。
    public boolean checkWon(int[][] board) {
        // write code here
        int n = board.length;
        int sum = 0;
        int i = 0;//定义行下标
        int j = 0;//定义列下标
        //先检查行的元素和
        for (i = 0; i < n; i++) {
            //每次计算的时候sum要进行清0
            sum = 0;
            for (j = 0; j < n; j++) {
                //求每一行的元素和，行号不变，变的是列号
                sum += board[i][j];
            }
            if (sum == n) return true;
        }
        //如果行中的元素和没有3，此时就判断列
        for (i = 0; i < n; i++) {
            //每次计算的时候sum要进行清0
            sum = 0;
            for (j = 0; j < n; j++) {
                //求每一列的元素和，列号不变，变的是行号
                sum += board[j][i];
            }
            if (sum == n) return true;
        }
        //如果还没有，此时就检查主对角线
        sum = 0;
        for (i = 0;i < n; i++) {
            //可以画图看一下主对角线
            sum += board[i][i];
        }
        if (sum == n) return true;
        //如果还没有就检查副对角线
        sum = 0;
        for (i = 0; i < n; i++) {
            //副对角线的下标也可以画图看一下
            sum += board[i][n-1-i];
        }
        if (sum == n) return true;
        return false;
    }
}
